5ff8c8c74e58a9df51be059908a064a43a67c50d,plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarEngine.java,SonarEngine,analyse,#Project#SensorContext#,90

Before Change


    for (InputFile inputFile : inputFiles) {
      Resource resource = getResource(inputFile);

      List<Block> fileBlocks = Lists.newArrayList(index.getByResourceId(getFullKey(project, resource)));
      List<CloneGroup> clones = OriginalCloneDetectionAlgorithm.detect(index, fileBlocks);
      if (!clones.isEmpty()) {
        // Save

After Change


        .toString();
  }

  public void analyse(Project project, SensorContext context) {
    List<InputFile> inputFiles = project.getFileSystem().mainFiles(project.getLanguageKey());
    if (inputFiles.isEmpty()) {
      return;
    }

    // Create index
    final SonarCloneIndex index;
    if (isCrossProject(project)) {
      Logs.INFO.info("Enabled cross-project analysis");
      index = new SonarCloneIndex(new DbCloneIndex(dbSession, resourcePersister, project));
    } else {
      index = new SonarCloneIndex();
    }

    TokenChunker tokenChunker = JavaTokenProducer.build();
    StatementChunker statementChunker = JavaStatementBuilder.build();
    BlockChunker blockChunker = new BlockChunker(BLOCK_SIZE);

    for (InputFile inputFile : inputFiles) {
      Resource resource = getResource(inputFile);
      String resourceKey = getFullKey(project, resource);

      File file = inputFile.getFile();
      TokenQueue tokenQueue = tokenChunker.chunk(file);
      List<Statement> statements = statementChunker.chunk(tokenQueue);
      List<Block> blocks = blockChunker.chunk(resourceKey, statements);
      index.insert(resource, blocks);
    }

    // Detect
    for (InputFile inputFile : inputFiles) {
      Resource resource = getResource(inputFile);
      String resourceKey = getFullKey(project, resource);

      Collection<Block> fileBlocks = index.getByResource(resource, resourceKey);
      List<CloneGroup> clones = OriginalCloneDetectionAlgorithm.detect(index, fileBlocks);